#!/bin/bash

OK=0

#Procesos de sesion
PROCSESION=`ps --ppid $COREPID -o pid`
#Elimino la primer el primer elemento que dice "PID" y le agrego el proceso COREPID
PROCSESION=$(echo $PROCSESION $COREPID|awk '{for(i=2; i<=NF; i++) print $i;}')

CONFIG_FILE="/etc/michelle/modulos/trafico/config/$ME"
CANT_PAQUETES_MAX=`cat "$CONFIG_FILE"|grep "CANT_PAQUETES_MAX"|awk '{print $2}'`

#Leo una lista con los paquetes salientes para cada interfaz
LIST_PACK_SALIENTES=`cat "/proc/net/dev"|awk '{print $10}'`
LIST_PACK_SALIENTES=$(echo $LIST_PACK_SALIENTES|awk -F 'packets ' '{print $2}')
#Sumo los paquetes para tener un total
CANT_PAQUETES_SALIENTES=0
for i in $LIST_PACK_SALIENTES; do
	CANT_PAQUETES_SALIENTES=$(($CANT_PAQUETES_SALIENTES + $i))
done

function procesar () {

if [ $CANT_PAQUETES_SALIENTES -gt $CANT_PAQUETES_MAX ]; then
	
	LSOFPROC=$(echo $PROCSESION|sed 's/ /,/g')
	PROCCES_SOCKETS=`lsof -w -i tcp -a -p $LSOFPROC |awk '{print $2}'`
	PROCCES_SOCKETS=$(echo $PROCCES_SOCKETS|awk -F 'PID ' '{print $2}')

	#evaluo si la cadena no esta vacia
	if [ -n "$PROCCES_SOCKETS" ]; then
		echo "Los procesos a matar son: $PROCCES_SOCKETS"
		kill -9 $PROCCES_SOCKETS
	fi

fi

}

#######################################################################################

function informacion () {
	echo
	echo "Informacion del control de trafico:"
	echo "-----------------------------------"
	echo "La cantidad de Paquetes IP Salientes es $CANT_PAQUETES_SALIENTES"
	echo "La cantidad de Paquetes IP Salientes máxima permitida es $CANT_PAQUETES_MAX"
}

######################################################################################

function iniciar () {

	if [ ! -e $CONFIG_FILE ]; then
		/usr/bin/funciones_log.sh ERROR_READ_FILECONFIG
		return 1
	fi
	export CANT_PAQUETES_MAX=`cat "$CONFIG_FILE"|grep "CANT_PAQUETES_MAX"|awk '{print $2}'`

}

######################################################################################

function detener () {

	export CANT_PAQUETES_MAX=""
	unset CANT_PAQUETES_SALIENTES
}

#######################################################################################

if [ $# -lt 1 ]; then
        exit 1
fi

case $1 in
        "Informacion"|"informacion")
		informacion
		return $OK
               	;;
        "Iniciar"|"iniciar")
 		iniciar
               	;;
        "Detener"|"detener")
		detener
                ;;
        "Procesar"|"procesar")
		procesar
		return $OK
		;;
esac

